package com.vite.system.mapper;

import java.util.List;
import java.util.Map;

import com.vite.system.domain.SysOperateLog;
import org.apache.ibatis.annotations.MapKey;

/**
 * 操作日志 数据层
 *
 */
public interface SysOperateLogMapper
{
    /**
     * 新增操作日志
     * 
     * @param log 操作日志对象
     */
    public void insertOperateLog(SysOperateLog log);

    /**
     * 查询系统操作日志集合
     * 
     * @param log 操作日志对象
     * @return 操作日志集合
     */
    public List<SysOperateLog> selectOperateLogList(SysOperateLog log);

    /**
     * 批量删除系统操作日志
     * 
     * @param operateIds 需要删除的操作日志ID
     * @return 结果
     */
    public int deleteOperateLogByIds(Long[] operateIds);

    /**
     * 查询操作日志详细
     * 
     * @param operateId 操作ID
     * @return 操作日志对象
     */
    public SysOperateLog selectOperateLogById(Long operateId);

    /**
     * 清空操作日志
     */
    public void cleanOperateLog();

    /**
     * 获取成功操作的统计信息
     */
    @MapKey("title")
    public List<Map<String, Object>> getSuccessOperationStats(SysOperateLog log);

    /**
     * 获取失败操作的统计信息
     */
    @MapKey("title")
    public List<Map<String, Object>> getFailureOperationStats(SysOperateLog log);

    /**
     * 获取按状态分类的操作统计信息
     */
    @MapKey("title")
    public List<Map<String, Object>> getStatusStats(SysOperateLog log);

    /** 
     * 获取按模块和操作类型分类的操作统计信息
     */
    @MapKey("title")
    public List<Map<String, Object>> getModuleOperationStats(SysOperateLog log);

}
